Data source interface log files

ABSTRACT

The invention provides for the connection of a plurality of remote applications with a data source and identifying a status corresponding to interactions between a remote application and a data source to maximize the speed and reliability of data transfer. An interface module interfaces with a remote application such as a web browser. A port module interfaces between interface module and a data source. A connection manager facilitates the interface between the interface module and the port module. The remote application may selectively establish an arbitrary set of user-selectable parameters to reflect a status of a connection between the remote application and the data source.

[0001] This application is a divisional of application Ser. No.09/612,534 filed on Jul. 7, 2000 for LIVE CONNECTION ENHANCEMENT FORDATA SOURCE INTERFACE.

BACKGROUND OF THE INVENTION

[0002] 1. Field of the Invention

[0003] The present invention relates generally to the management of aremote application connection to a data source. More particularly, thepresent invention relates to identifying a status corresponding tointeractions between a remote application and a data source.

[0004] 2. Relevant Technology

[0005] Databases are computerized information storage and retrievalsystems. A Relational Database Management System (RDBMS) is a databasesystem which uses relational techniques for storing and retrieving data.Relational databases are organized into tables consisting of rows andcolumns of data. A database typically includes many tables, and eachtable includes multiple rows and columns. The tables are conventionallystored in direct access storage devices (DASD), such as magnetic oroptical disk drives, for semi-permanent storage.

[0006] Generally, users communicate with an RDBMS using a StructuredQuery Language (SQL) interface. The SQL interface allows users tocreate, manipulate, and query a database by formulating relationaloperations on the tables, either interactively, in batch files, orembedded in host languages such as C and COBOL. SQL has evolved into astandard language for RDBMS software and has been adopted as such byboth the American National Standards Institute (ANSI) and theInternational Standards Organization (ISO).

[0007] A common application for databases relates to their interactionwith Internet web browsers. A remote application such as a web browsermay be used to query data from a data base. The data may then be used tocreate a table or other display of information on the web browser. Thisrequires the transfer of data files and the formatting of data on theweb browser. As the database is responsive to SQL and a web browserrequires an HTML format, an interface module is required to enableinteraction between the web browser and the database. One example ofsuch an interface module is Net.Data available from IBM Corp., Armonk,N.Y.

[0008] Net.Data enables Internet and Intranet access to relational dataon a variety of platforms. Net.Data incorporates a macrolanguage whichsupports both HTML and SQL and allows for interaction with universal webbrowsers and relational database systems. Net.Data operates inconjunction with a web server interface and supports client-sideprocessing as well as server-side processing with languages such asJava, REXX, Perl and C++. Net.Data provides database connectivity to avariety of data sources including information stored in relationaldatabases, flat files Java files, Perl files and the like.

[0009] Net.Data may support a variety of operating systems, includingOS/2, AIX, Windows NT, HP-UX, Solaris, SCO, OS/390 and OS/400. Net.Datais further able to cache web pages to improve application performance,particularly when repeated requests are made for the same web page.Although this invention is compatible for use with an interface modulesuch as Net.Data, other common gateway interface applications may beused with the present invention as well.

[0010] The interface module, which may be resident on a server, receivesa query from a web browser, formats the query into SQL, and interactswith the database to receive data and create the table or other displayof information. The interface module then uses its macrolanguage topresent the data to the web browser in HTML format. The web browser, inturn, displays the data to a user of the remote application. In thismanner, the interface module serves as an Internet gateway for accessinga database. However, every time the interface module connects to thedatabase, requests a connection set up for the database, or sends aquery to get data results from the data base, the interface must performa set of time-consuming processes such as initialization, authorization,password confirmation, and the like. These processes can be timeconsuming, slowing down the entire system and process.

[0011] One attempt to overcome the problem of slower connections was tocreate a database manager to assist in synchronizing the connection ofthe interface modules with various ports of the database. However, inorder to accommodate numerous web browsers, multiple applications of aninterface module may be running, which may complicate the system. Withincreased use and complication, the system may be difficult to debugwhen a problem arises. Additionally, because everything runs through aconnection manager, there are often miscommunications, synchronizationproblems, and bottlenecks between the user applications and thedatabase.

[0012] If other databases were static and the data source becameinactive or went down for whatever reason, the data manager would not beable to tell when the data source became active again. Thus, subsequentqueries would still detect an inactive data source. In order toestablish another connection with the data source, the whole systemwould have to be reinitialized. In situations where the data managermanaged multiple users, this reinitialization would affect remote userswhose connection to a data base was functioning normally.

[0013] Thus, it would be an advancement in the art to provide a systemand method for connecting a plurality of remote applications with a datasource in a simplified way.

[0014] It would be a further advancement in the art to provide such asystem and method which would remove the likelihood of bottleneck byremoving the necessity of routing every communication between theinterface module and data source through the connection manager.

[0015] It would be a further advancement in the art to provide such asystem and method that was dynamic and reliable and did not have toreinitialize if the data source became inactive or “went down.”

[0016] Such an apparatus and method in accordance with the presentinvention is disclosed and claimed herein.

SUMMARY OF THE INVENTION

[0017] The present invention solves many or all of the foregoingproblems by introducing a system and method by which a plurality ofremote applications can connect with a data source without having allcommunication pass through a simple connection manager.

[0018] In one aspect of the invention, a system includes an interfacemodule configured to interface with a remote application, a port moduleto interface between the interface module and the data source, and aconnection manager module to facilitate the direct interface between theinterface module and the port module. The connection manager mayestablish a connection between the connection manager and the portmodule. In one preferred embodiment, the port module reports itsavailability to the connection manager through this connection. This maybe done by the connection manager retrieving a port module identifier,which identifies an available port module for connecting to the datasource from a data structure. The port module identifier may then bepassed to the interface module so that the interface module may connectdirectly to the port module, and thus, the data source.

[0019] The system in one preferred embodiment is configured to supportHTML and provide interfacing between the requesting application and thedata source. The interface module may be configured to convert thecommand from the remote application to a structured query languageformat to support interfacing with the data source.

[0020] In another aspect of the invention, a method for connecting aplurality of remote applications with a data source includes the stepsof providing at least one interface module configured to interface witha remote application, providing at least one port module to interfacebetween the interface module and the data source, and providing aconnection manager to facilitate the interface between the interfacemodule and the port module. In a preferred embodiment, the methodfurther includes establishing a direct connection between the interfacemodule and the port module. A port module identifier for an availableport module may be returned to the interface module for directconnection between the interface module and the port module.

[0021] Thus, it is an object of the invention to provide for themanagement of the connection between remote applications and a datasource which alleviates bottlenecks in the data flow. It is anotherobject of the invention to simplify the connection process by reducingthe steps in the connection process. It is yet another object of theinvention to reduce the need to synchronize each module used in theconnection process.

[0022] These and other objects, features, and advantages of the presentinvention will become more fully apparent from the following descriptionand appended claims, or may be learned by the practice of the inventionas set forth hereinafter.

BRIEF DESCRIPTION OF THE DRAWINGS

[0023] These and other more detailed and specific objects and featuresof the present invention are more fully disclosed in the followingspecification, with reference to the accompanying drawings, in which:

[0024]FIG. 1 is a schematic block diagram of a computer system suitablefor implementing one embodiment of the invention;

[0025]FIG. 2 is a schematic block diagram of one embodiment of a systemin accordance with the present invention;

[0026]FIG. 3 is a schematic block diagram illustrating the components ofone embodiment of a system for connecting a plurality of remoteapplications with a data source;

[0027]FIG. 4 is a schematic block diagram illustrating more details ofthe embodiment of FIG. 2;

[0028]FIG. 5 is a schematic block diagram of a data structure for use inthe system for connecting a plurality of remote applications with a datasource.

[0029]FIG. 6 is a schematic block diagram of a data structure for use inthe system for connecting a plurality of remote applications with a datasource;

[0030]FIG. 7 is a schematic block diagram illustrating the components ofan alternative embodiment for a system for connecting a plurality ofremote applications with a data source; and

[0031]FIG. 8 is a flow diagram illustrating steps performed in oneembodiment of a method in accordance with the present invention.

DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS

[0032] Certain preferred embodiments of a system in accordance with theinvention are now described with reference to the FIGS. 1-8, where likereference numbers indicate identical or functionally similar elements.The components of the present invention, as generally described andillustrated in the Figures, may be implemented in a wide variety ofconfigurations. Thus, the following more detailed description of theembodiments of the system and method of the present invention, asrepresented in the FIGS. 1-8, is not intended to limit the scope of theinvention, as claimed, but is merely representative of presentlypreferred embodiments of the invention.

[0033] Various components of the invention are described herein as“modules.” In various embodiments, the modules may be implemented assoftware, hardware, firmware, or any combination thereof. For example,as used herein, a module may include any type of computer instruction orcomputer executable code located within a memory device and/ortransmitted as electronic signals over a system bus or network. Anidentified module may, for instance, comprise one or more physical orlogical blocks of computer instructions, which may be organized as anobject, procedure, function, or the like.

[0034] Nevertheless, the identified modules need not be locatedtogether, but may comprise disparate instructions stored in differentlocations, which together implement the described functionality of themodule. Indeed, a module may comprise a single instruction, or manyinstructions, and may even be distributed over several different codesegments, among different programs, and across several memory devices.

[0035] As used herein, the term executable code, or merely “executable,”is intended to include any type of computer instruction and computerexecutable code that may be located within a memory device and/ortransmitted as electronic signals over a system bus or network. Anidentified module of executable code may, for instance, comprise one ormore physical or logical blocks of computer instructions which may, forinstance, be organized as an object, procedure, or function.Nevertheless, the executables of an identified module need not belocated together, but may comprise disparate instructions stored indifferent locations which together comprise the module and achieve thepurpose stated for the module. Indeed, an executable may be a singleinstruction, or many instructions, and may even be distributed overseveral different code segments, among different programs, and acrossseveral memory devices.

[0036] Similarly, operational data may be identified and illustratedherein within modules, and may be embodied in any suitable form andorganized within any suitable type of data structure to be used,produced, or operated on during execution of an executable. Theoperational data may be collected as a single data set, or may bedistributed over different locations including over different storagedevices, and may at least partially exist merely as electronic signalson a system bus or network.

[0037]FIG. 1 is a schematic block diagram illustrating a computer system10 in which a plurality of modules may be hosted on one or more computerworkstations 12 connected via a network 14. The network 14 may comprisea wide area network (WAN) or local area network (LAN) and may alsocomprise an interconnected system of networks, one particular example ofwhich is the Internet.

[0038] A typical computer workstation 12 may include a centralprocessing unit (CPU) 16. The CPU 16 may be operably connected to one ormore memory devices 18. The memory devices 18 are depicted as includinga non-volatile storage device 20 (such as a hard disk drive or CD-ROMdrive), a read-only memory (ROM) 22, and a random access memory (RAM)24.

[0039] Preferably, the computer workstation 12 operates under thecontrol of an operating system (OS) 25, such as OS/2®, WINDOWS NT®,WINDOWS®, UNIX®, and the like. In one embodiment, the OS 25 may providea graphical user interface (GUI) to enable the user to visually interactwith the modules of the present invention. In one embodiment, the OS 25may be loaded from the non-volatile storage device 20 into the RAM 24 atthe time the workstation 12 is booted.

[0040] The workstation 12 may also include one or more input devices 26,such as a mouse and/or a keyboard, for receiving inputs from a user.Similarly, one or more output devices 28, such as a monitor and/or aprinter, may be provided within, or be accessible from, the workstation12.

[0041] A network interface 30, such as an Ethernet adapter, may beprovided for coupling the workstation 12 to the network 14. In oneembodiment, the workstations 12 may be coupled to the network 14 via adistributed remote data architecture (DRDA). Where the network 14 isremote from the workstation 12, the network interface 30 may comprise amodem, and may connect to the network 14 through a local access line,such as a telephone line.

[0042] Within any given workstation 12, a system bus 32 may operablyinterconnect the CPU 16, the memory devices 18, the input devices 26,the output devices 28, the network interface 30, and one or moreadditional ports 34, such as parallel and serial ports.

[0043] The system bus 32 and a network backbone 36 may be regarded asdata carriers. Accordingly, the system bus 32 and the network backbone36 may be embodied in numerous configurations, such as wire and/or fiberoptic lines, as well as electromagnetic channels using visible light,infrared, and radio frequencies.

[0044] In general, the network 14 may comprise a single local areanetwork (LAN), a wide area network (WAN), several adjoining networks, anIntranet, an Extranet, or, as in the manner depicted, a system ofinterconnected networks such as the Internet 40. The individualworkstations 12 may communicate with each other over the backbone 36and/or over the Internet 40 using various communication techniques.

[0045] For instance, different communication protocols, e.g., ISO/OSI,IPX, TCP/IP, may be used within the network 14. In the case of theInternet 40, however, a layered communications protocol (i.e. TCP/IP)generally best enables communications between the differing networks 14and workstations 12.

[0046] The workstations 12 may be coupled via the network 14 toapplication servers 42, and/or other resources or peripherals 44, suchas scanners, printers, digital cameras, fax machines, and the like.External networks, may be coupled to the network 14 through a router 38and/or through the Internet 40.

[0047] Referring now to FIG. 2, a data source connection managementsystem 200 of the present invention is shown. In one embodiment, a webbrowser 202, is part of a computer station 204. The work station 204 maycontain a plurality of modules (not shown) containing executable codeand operational data suitable for operation within the memory devices 18of FIG. 1. Of course, the memory devices 18 in which the modules of thepresent invention are located may also be distributed across both localand remote computer workstations 12 (FIG. 1). Likewise, two or moreillustrated modules may be integrated into a single module withoutdeparting from the scope of the invention.

[0048] The present invention may be used over the Internet 40 inconjunction with a conventional web browser 202. The web browser 202interprets HTML documents and formats and defines web pages 204. The webbrowser 202 may be at a remote workstation 12 (FIG. 1) and may beconnected through the Internet 40 to a web server 206. The web server206 stores HTML documents and interacts with the web browser 202 fordownloading and uploading the documents for generation of web pages 212.

[0049] By way of example, a user at a remote application such as a webbrowser 202, may want to search for a book on a book store web servervia the Internet. The web browser 202 connects to the server 206. Theserver 206 invokes an interface module 208, which allows the remote userto specify a keyword in a book title for example. The interface module208 will pass the request to a data source 210 and receive data inreturn in the form of a data file. The file can then be used to create aweb page 212 either at the server 206 or at the remote user's webbrowser 202.

[0050] Referring now to FIG. 3, the system 200 of the present inventionincludes a connection manager 220. The connection manager 220 is amodule that may include any type of computer instruction or computerexecutable code located within a memory device and/or transmitted aselectronic signals over a system bus or network. It may comprise one ormore logical blocks of computer instructions, which may be organized asan object, procedure, function, or the like. In one preferredembodiment, the connection manager 220 is running in the background onthe server 206.

[0051] The connection manager 220 is also configured to interface withat least one interface module 208. The connection manager is preferablylocated at a predetermined address to allow the interface module 208 toreadily connect to the connection manager 220. Each interface module 208in also configured to interface with a remote application 202 which maybe a web browser connected to the interface module 208 through theInternet 40.

[0052] The connection manager 220 also interfaces with a plurality ofport modules 222. Each port module 222 may be associated with one ormore data sources 210 and is identified by a port module identifier andthe data source 210 with which it is associated. The port module 222,connection manager 220, and interface module 208 may each have their ownseparate executable code. In a presently preferred embodiment, each ofthe port modules 222, connection manager 220, and interface modules 208communicate with each other using TCP/IP protocol, which allows thepresent invention to be easily transported between various operatingsystem platforms such as Unix, OS, or Windows.

[0053] The interface module 208 seeks a connection 224 with theconnection manager 220 at the predetermined connection manager address.As will be discussed in greater detail below, the connection manager 220will determine which data sources 210 are available to the remoteapplication 202 and which port modules 222 are associated with each datasource 210. The connection manager 220 will identify a port module 222that is active, but not currently busy operating as the port or gatewayto the database for an interface module 208. The connection manager 220will return the port module identifier to the interface module 208 toallow the interface module 208 to establish a direct connection 226 withport module 222 and thus, the data source 210.

[0054] Instead of the connection manager 220 repeatedly having tocommunicate with each port module 222 and each interface module 208involved with a data source query for multiple port modules 222 andinterface modules 208, the connection manager 220 simply tracks whichport modules 222 are busy. When the interface module 208 requests a portmodule 222 for connection to the data source 210, the connection manager220 simply provides or identifies a location of an available port module222 which can then communicate directly with the interface module. Itwill be appreciated by those of skill in the art that this configurationand method will eliminate information bottlenecks at the connectionmanager 220.

[0055] Referring now to FIG. 4, a remote application connects to a webserver 206 to request information from a data source 210 which in onepreferred embodiment is on the server side. For most data sources, therequest must be converted into an SQL command. The request is sent to aninterface module 208 which reads the request and formats it into an SQLcommand. Both the web server 206 and the interface module 208 may beresident on the server side. Further, the web server 206 or theinterface module 208 may convert the remote application request into anSQL query.

[0056] The connection manager 220 then determines an available portmodule 222 and returns the location of the port module 222 to theinterface module 208. The request may then be sent as an SQL command 230to the data source 210 directly through the port module 222. In oneembodiment, the data source 210 may be a database system 210 such as arelational database, but hierarchical and object-oriented databases arealso within the scope of this invention. In other preferred embodiments,data sources may include JAVA or PERL applications. In embodiments wheredata sources other than relational databases are used, the interfacemodule 208 is configured to be compatible with such data sources in asupporting transaction and command language.

[0057] A database manager 232, such as DB2 manufactured by InternationalBusiness Machines, receives the SQL command 230 and searches in thedatabase 210 to retrieve query results 234 that satisfy the SQL command230. The query results 234 may include any number of various filesstored in a database 210 including text, values, characters, integers,and the like. Once the query results 234 are retrieved, the databasemanager 232 passes the query results 234 to the interface module 208through the appropriate port module 222 connection. The interface module208 may pass the query results 234 in an HTML format through the webserver 206 to the remote application, which may be used to create a webpage 212 on a web browser 202. This feature expedites retrieval of queryresults 214 and generation of the web page 204.

[0058] Accordingly, the interface module 208 is configured to becompatible with HTML as well as SQL transactions and commands 230. Inone embodiment, the interface module 208 may be Net.Data, but one ofskill in the art will appreciate that other computer gateway interfacescapable of supporting and interfacing HTML formats and SQL commands maybe used as well.

[0059] Referring now to FIGS. 4, 5, and 6, each port module is known byan associated database and port module identifier. In one embodiment, adata structure 240 includes entries 242 containing the name of the datasource 210, a minimum number of port modules 222 associated with thedata source 210, and a maximum number of port modules 222 associatedwith the data source 210. In one presently preferred embodiment, thedata structure is a data source array 240. It will be appreciated bythose of skill in the art that any type of data structure or storagedevice may be used to store information of the type stored in the datasource array 240.

[0060] A second data structure 244 indexes the data source array 240 andincludes entries 246 containing data regarding each port module 222associated with a particular data source 210. Each entry identifieswhich data source each port module belongs to, the port moduleidentifier, and a status, which states whether the port module is busyor available.

[0061] In a preferred embodiment, the data structure 244 is a portmodule array 244. It will be appreciated by those of skill in the artthat any type of data structure or storage device may be used to storeinformation of the type store in the port module array 244.

[0062] The connection manager 220 returns a port module identifier of anavailable particular port module 222 to the interface module by checkingthe availability status for the port module 222 associated with the datasource 210 that is the object of the data request or SQL command 230.The availability status of a port module 222 may be determined by anumber of factors. Upon initialization of the connection manager 220,the minimum number of port modules, as stored in the data source array240 are launched and available for connecting to an interface module208.

[0063] Once a port module 222 is connected to an interface module 208,that port module 222 is no longer available and its status changes tobusy or unavailable. Once a busy port module 222 is no longer occupiedby an interface module 208, its status is updated from busy to availableand passed along to the connection manager for storage in the portmodule data structure 244. Each port module 222 may be configured torefresh or restart itself after a predetermined period of time, or aftera particular event, such as the occurrence of an error.

[0064] In a presently preferred embodiment, each port module 222 isconfigured to know its availability status and continually report thatstatus to the connection manager 220 for storage in the port modulearray 244. It will be appreciated by those of skill in the art that inthis configuration, the connection manager 220 need not initiate contactwith the data source 210 every time a request or SQL command passed fromthe interface manager 208. That would be time consuming, especially fordata sources residing on main frames. Instead, the connection manager220 need only determine the first port module 222 having an “available”status and pass the corresponding port module identifier to theinterface module 208 for direct connection 226.

[0065] It will be appreciated by those of skill in the art that thereare many ways for connection manager 220 to determine the firstavailable port module 222. One such way includes storing the port moduleidentifier for each available port module 222 in a queue (not shown). Inone preferred embodiment, the queue may include a first-in-first outarray. If the status of an “available” port module 222 changes, theassociated port module identifier is removed from the queue. Theconnection manager 220, need only check the queue of “available” portmodule identifiers to find an available port module 222.

[0066] In one preferred embodiment, the connection manager 220 may beconfigured to launch additional port modules 222 up to the predeterminedmaximum number of port modules 222 for a particular data source 210; thenumber being stored in the data source array.

[0067] It will be appreciated by those of skill in the art that thestorage of information such as that stored in the arrays 240, 244 may beaccomplished in various ways using various data structures. It willfurther be appreciated that these arrays 240, 244 or data structures240, 244 may be part of the connection manager 220, the port module 222,the interface module 208, or may be a separate module, and still providethe necessary information to enable a direct connection 226 between theinterface module 208 and the port module 222 after the manner of thepresent invention.

[0068] In one preferred embodiment, communication between the interfacemodule 208, connection manager 220, and the port module 222 may besubject to authentication as a security measure. It will be appreciatedby those of skill in the art that the data source array 240 and/or theport module array 244 may also include user identification or passworddata for use in verifying or authenticated the relevant communications.It will further be appreciated that any such identification data may bepart of a separate module, or hard coded into the system 200.

[0069] Referring now to FIG. 7, one preferred embodiment of the presentinvention includes an arbitrary set of parameters, which may be embodiedas a log file 250 associated with the connection manager 220 and eachport module 222. Each log file 250 contains data 252 relating to theactivity of the port module 222 and connection manager 220 to facilitatethe tracking of data flow through the system 200. The data 252 in eachlog file 250 may include, for example, the date, time, a previous SQLstatement or request, a present SQL statement or request, a number ofrows, a warning message, an error messages, a feature database schema, anumber of records, and the like. Because each port module 222 will havea port module identifier and data source identifier, a user may trackthe how many, and what type of, SQL statements passed to the data source210. One may also determine the time of the last SQL statement orrequest to the data source 210 and other information at predeterminedpoints in the process.

[0070] It will be appreciated by those of skill in the art that thisinformation would facilitate debugging the system 200. For example,users at a remote application 202 that may be creating or programming aweb page that utilizes data stored at a data source 210 may check thelog files 250 to track down an error in the application.

[0071] Each port module 222 and the connection manager 210 writes to alog file 250, which in one preferred embodiment is stored as a flatfile. In a presently preferred embodiment, the log file 250 has amaximum storage capacity of one megabyte. Once the log file 250 is full,another log file 250 may be generated. The log file 250 in accordancewith the present invention is dynamic. The data 252 stored in the logfiles 250 is continually updated as the system 200 operates. It will beappreciated by those of skill in the art that various sizes or types offiles can be used to store the data 252 contained in the log files 250.Of importance is the fact that the data 252 in the log files 250 isaccessible to the remote application 202.

[0072] The log file 250 is configured such that a user at a remotelocation 202 can view the data 252 stored in the log files 250 on ascreen, print out the data 252, or send it to another application. Theuser of a remote application 202 may also determine which ofpredetermined types of data will be stored in the log files 250. Theuser may set the log files 250 at a maximum level so that a maximusamount of data is stored in the log files 250. The user may also set thelog files 250 to store a minimum level of data. It will be appreciatedby those of skill in the art that the system 200 will run moreefficiently when the amount of data 252 stored in the log file 250 isset to a minimal level.

[0073] In one preferred embodiment, the log file 250 stores a change instatus of the data source 210 from active to inactive. Thus, the portmodule 222 knows whether the data source 210 was “down” the last timethe port module 222 was connected to the interface module 208. When theconnection manager 220 seeks to establish a connection with the datasource 210 through the port module 222, the port module 222 will checkthe last status of the data source 210, to which it is assigned todetermine whether the data source 210 was active or inactive. If thelast detected status indicated that the data source was inactive or“down,” the port module 222 will reestablish a connection with the datasource 210.

[0074] The connection or reconnection between the port module 222 andthe data source 210 may be transparent to the interface module 208. Ifthe data source 210 is down, then the port module 222 will send theinterface module 208 an error message stating that the data source 210is down. When the data source 210 becomes active or is otherwiseaccessible again, the entire system 200 does not have to stop andrestart in order to reestablish a connection between the interfacemodule 208 and the data source 210. The port module 222, because itknows that the data source 210 was down during its last connection, willreestablish a connection with the data source.

[0075] One of skill in the art will appreciate that if the connectionmanager 220 had to reinitialize, all of the part modules 222 attached tothe connection manager 220, even those whose connection to a respectivedata base was functioning fine, would reset, thus interrupting a datasearch. Thus, it is an advantage of the present invention for the portmodule 222 to be able to determine the last status of the data source210, and be able to reconnect to its data source 210 without theconnection manager 220 having to reinitialize. This enhanced errorrecovery makes the system more reliable. Most importantly, users see thesystem as more reliable and less temperamental, requiring lessinteraction.

[0076] Referring to FIG. 8, a flow diagram 300 which incorporates oneembodiment of a method of use of the system 200 of FIGS. 2-7. In step302, the method begins. A remote application, such as the web browser202 requests data from a data source 210. The request may be sent overthe Internet 40 to the web server 206, which provides 304 the interfacemodule 208 which translates the request into a suitable search commandsuch as SQL.

[0077] The connection manager 220 is initialized 306 for communicationwith the interface module 208. The connection manager 220 identifies 308and stores the location of the port modules 222 associated with aparticular data source 210. The port modules 222 serve as the connectionport to the data source 210 for the interface module 208. The connectionmanager 210 facilitates the communication between the interface module208 and the connection manager 220. The connection manager 220establishes a connection with the port module 222 and determines 310whether the port module 222 is available. Each port module 222 isassociated with a particular data source 210 and identified by a portmodule identifier, which are each stored in a suitable data structure. Aport module identifier for an available port module 222 is returned 312to the interface module 208. A direct connection is established 214between the interface module 208 and the port module 222.

[0078] In one preferred embodiment, the connections between theinterface module 208, the connection manager 220, and the port module222 are authorized to facilitate secured communications.

[0079] The request 314 converted into SQL is passed to the data source210 and the retrieved data 316 is inserted 318 into an HTML format tosupport interfacing between the remote application 202 and the datasource 210. The method may then be repeated 320 for additional datasource requests or queries. If there are no further requests, the remoteapplication 202 disconnects from the server 206 and the methodterminates 322.

[0080] In one embodiment, an arbitrary set of user-selectable parametersreflects a status of the connection between the remote application andthe data source. These parameters may include a present SQL request, awarning message, an error message, a date, a time, a previous SQLrequest, a feature database schema, and/or a number of records. Dataassociated with these parameters may be passed to a log file 250 atvarious stages in the process. In one preferred embodiment, the data istransmitted 324 to the log file 250 according to condition selected by auser. For example, the user may want to maximize efficiency in theprocess by limiting the fields or parameters of data sent to the logfile. On the other hand, the user may want to obtain as much informationas possible in order to better debug the system or track data flow ingreater detail.

[0081] Transmitting 324 the data associate with the parameters to thelog file 250 may be performed at various times throughout the method300. Accordingly, the step of transmitting 324 may be identified as asub-step 324 which may be performed after or in conjunction with othersteps of the method 300. Thus, transmitting 324 is illustrated in FIG. 8at more than one location for illustrative purposes only. One of skillin the art will appreciate that the step of transmitting 324 may beperformed at any number of locations in the method 300.

[0082] In one preferred embodiment, the data stored in correlation withthe arbitrary set of parameters is arranged in a hierarchical relation.At least one parameter of the arbitrary set of parameters corresponds toan output device selected by a user. For example, the user may select toview the data in the log file 250 on the screen or by sending it to aprinter.

[0083] The invention provides for the management of the connectionbetween remote applications and a data source which alleviatesbottlenecks in the data flow. The system and method of the presentinvention simplifies the connection between the remote application andthe data source process by reducing the steps in the connection process.The system and method of the present invention eliminates the need tocontinually synchronize the interface module 208 with the port module222 for each data source 210 request. The invention may be readilyadapted to existing software applications such as web browsers, webservers, database management systems, operating systems and othermodules disclosed herein.

[0084] The present invention may be embodied in other specific formswithout departing from its scope or essential characteristics. Thedescribed embodiments are to be considered in all respects only asillustrative and not restrictive. The scope of the invention is,therefore, indicated by the appended claims rather than by the foregoingdescription. All changes which come within the meaning and range ofequivalency of the claims are to be embraced within their scope.

What is claimed and desired to be secured by United States LettersPatent is:
 1. A method for identifying a status corresponding tointeractions between a remote application and a data source, the methodcomprising: providing at least one interface module configured tointerface with a remote application; providing at least one port moduleconfigured to interface between the interface module and the datasource; and providing a connection manager to facilitate the interfacebetween the interface module and the port module.
 2. The method of claim1, further comprising selectively establishing a set of parameters toreflect a status of a connection between the remote application and thedata source.
 3. The method of claim 2, where in the parameters areuser-selectable.
 4. The method of claim 1, further comprising connectingdirectly the interface module and the port module for communicatingindependently from the connection manager in subsequent communications.5. The method of claim 1, wherein at least one of the parameters isselected from the group consisting of a present SQL request, a warningmessage, an error message, a date, a time, a previous SQL request, afeature database schema, and a number of records.
 6. The method of claim1, wherein the number of parameters is limited by a user in order toreduce processing time of a request to the data source.
 7. The method ofclaim 1, wherein the types and number of parameters are expanded toreflect a detailed history of interactions between the remoteapplication and the data source.
 8. The method of claim 1, furthercomprising hosting the interface module on a first computer distinctfrom a second computer hosting the data source.
 9. The method of claim1, further comprising hosting the interface module on a computer hostingthe data source.
 10. The method of claim 1, wherein the arbitrary set ofparameters further comprises a log file containing data reflectingcondition selected by a user.
 11. The method of claim 10, wherein thedata further reflects at least one of a present SQL request, a warningmessage, an error message, a date, a time, a previous SQL request, afeature database schema, and a number of records.
 12. The method ofclaim 11, wherein the arbitrary set of parameters is arranged in ahierarchical relation.
 13. The method of claim 12, wherein at least oneparameter of the arbitrary set of parameters corresponds to an outputdevice selected by a user.
 14. A computer readable medium having storedthereon computer executable instructions for performing a method forconnecting a plurality of remote applications with a data source, themethod comprising: providing at least one interface module configured tointerface with a remote application; providing at least one port moduleto interface between the interface module and the data source; providinga connection manager to facilitate the interface between the interfacemodule and the port module; and selectively establishing an arbitraryset of user-selectable parameters to reflect a status of a connectionbetween the remote application and the data source.
 15. The computerreadable medium of claim 14, wherein the method further comprisesconnecting directly the interface module and the port module forcommunicating independently from the connection manager in subsequentcommunications.
 16. The computer readable medium of claim 14, wherein atleast one of the parameters is selected from the group consisting of apresent SQL request, a warning message, an error message, a date, atime, a previous SQL request, a feature database schema, and a number ofrecords.
 17. The computer readable medium of claim 14, wherein thenumber of parameters is limited by a user in order to reduce processingtime of a request to the data source.
 18. The computer readable mediumof claim 14, wherein the types and number of parameters are expanded toreflect a detailed history of interactions between the remoteapplication and the data source.
 19. The computer readable medium ofclaim 14, further comprising hosting the interface module on a firstcomputer distinct from a second computer hosting the data source. 20.The computer readable medium of claim 14, further comprising hosting theinterface module on a computer hosting the data source.
 21. The computerreadable medium of claim 14, wherein the arbitrary set of parametersfurther comprises a log file containing data reflecting conditionselected by a user.
 22. The computer readable medium of claim 21,wherein the data further reflects at least one of a present SQL request,a warning message, an error message, a date, a time, a previous SQL,request, a feature database schema, and a number of records.
 23. Thecomputer readable medium of claim 22, wherein the arbitrary set ofparameters is arranged in a hierarchical relation.
 24. The computerreadable medium of claim 23, wherein at least one parameter of thearbitrary set of parameters corresponds to an output device selected bya user.
 25. A system for connecting a plurality of remote applicationswith a data source, the system comprising: an interface moduleconfigured to interface with a remote application; a port moduleconfigured to interface between the interface module and the datasource; a connection manager module configured to facilitate a linkbetween the interface module and the port module; and a log filecomprising parameters arbitrarily selectable by a user to reflect astatus of a connection between the remote application and the datasource desired to be monitored by a user.
 26. The system of claim 25,wherein the connection module is further configured to form a directinterface between the interface module and the port module.
 27. Thesystem of claim 25, wherein one of the port module and the interfacemodule is further configured to directly connect the interface moduleand the port module for communicating independently from the connectionmanager in subsequent communications.
 28. The system of claim 25,wherein at least one of port module and the interface module isconfigured to provide from a user the parameters, selected from thegroup consisting of a present SQL request, a warning message, an errormessage, a date, a time, a previous SQL request, a feature databaseschema, and a number of records.
 29. The system of claim 28, wherein thenumber of parameters is limited by a user in order to reduce processingtime of a request to the data source.
 30. The system of claim 28,wherein the types and number of parameters are expanded to reflect adetailed history of interactions between the remote application and thedata source.
 31. The system of claim 25, wherein the interface module isconfigured to run on a first computer distinct from a second computerhosting the data source.
 32. The system of claim 25, wherein theinterface module is configured to run on a computer hosting the datasource.
 33. The system of claim 25, wherein the log is configured tosupport an arbitrary set of parameters containing data reflectingconditions selected by a user.
 34. The system of claim 33, wherein thedata further reflect at least one of a present SQL request, a warningmessage, an error message, a date, a time, a previous SQL request, afeature database schema, and a number of records.
 35. The system ofclaim 34, wherein the arbitrary set of parameters is arranged in ahierarchical relation.
 36. The system of claim 35, wherein at least oneparameter of the arbitrary set of parameters corresponds to an outputdevice selected by a user.